home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / ast_comp / gopher.lha / gopher1.01 / gopherd / gopherdef.c < prev    next >
C/C++ Source or Header  |  1992-05-25  |  2KB  |  99 lines

  1. #include <ndbm.h>
  2. #include "GSgopherobj.h"
  3. #include "Malloc.h"
  4. #include "string.h"
  5.  
  6. void
  7. GSmodLine(gs, inputline)
  8.   GopherObj *gs;
  9.   char *inputline;
  10. {
  11.      
  12.      if (strncmp(inputline, "Type=", 5)==0) {
  13.       GSsetType(gs, inputline[5]);
  14.       if (inputline[5] == '7') {
  15.            /*** Might as well set the path too... ***/
  16.            *(GSgetPath(gs)) = '7';
  17.       }
  18.      }
  19.      
  20.      else if (strncmp(inputline, "Name=", 5)==0) {
  21.       GSsetTitle(gs, inputline+5);
  22.      }
  23.      
  24.      else if (strncmp(inputline, "Host=", 5)==0) {
  25.       GSsetHost(gs, inputline+5);
  26.      }
  27.      
  28.      else if (strncmp(inputline, "Port=", 5)==0) {
  29.       GSsetPort(gs, atoi(inputline+5));
  30.      }
  31.      
  32.      else if (strncmp(inputline, "Path=", 5)==0) {
  33.       GSsetPath(gs, inputline+5);
  34.      }
  35.      
  36.      else if (strncmp(inputline, "Numb=", 5)==0) {
  37.       GSsetNum(gs, atoi(inputline+5));
  38.      }
  39.      
  40.      else if (strncmp(inputline, "Name=", 5)==0) {
  41.       GSsetTitle(gs, inputline+5);
  42.      }
  43.  
  44. }
  45.  
  46.  
  47.  
  48. /*
  49.  * Given a 
  50.  */
  51.  
  52. GSfromdbm(gs, db, inode)
  53.   GopherObj *gs;
  54.   DBM *db;
  55.   int inode;
  56. {
  57.      datum thekey, thedata;
  58.      char *lineptr;
  59.  
  60.  
  61.      /*** Try keying on the inode # (file might have been renamed) ***/ 
  62.      
  63.      thekey.dptr  = (char *) &inode;
  64.      thekey.dsize = sizeof(inode);
  65.  
  66.      thedata = dbm_fetch(db, thekey);
  67.  
  68.      if (thedata.dptr == NULL)
  69.       return;
  70.  
  71.      /*** Try keying on the name. ***/
  72.  
  73.      thekey.dptr  = GSgetTitle(gs);
  74.      thekey.dsize = strlen(thekey.dptr);
  75.      
  76.      thedata = dbm_fetch(db, thekey);
  77.  
  78.      if (thedata.dptr == NULL)
  79.       return;
  80.  
  81.      /*** Hmm, otherwise something's afoot ***/
  82.  
  83.      lineptr = thedata.dptr;
  84.      
  85.      while (lineptr != NULL) {
  86.       char *tempptr;
  87.  
  88.       tempptr = strchr(lineptr, '\n');
  89.       
  90.       GSmodLine(gs, lineptr);
  91.       if (tempptr == NULL) 
  92.            lineptr = NULL;
  93.       else
  94.            lineptr = tempptr + 1;
  95.      }
  96. }
  97.  
  98.  
  99.